#ifndef UHM_MAT_MAP_HXX_
#define UHM_MAT_MAP_HXX_

namespace uhm {

  // Mapping
  // -------
  template<class I_> 
  void copy(Mapper_<I_> &M_col, Mapper_<I_> &M_row, Mat_Base_ &S, Mat_Base_ &T);
  template<class I_>
  void axpy(Mapper_<I_> &M_col, Mapper_<I_> &N_row, Mat_Base_ &S, Mat_Base_ &T);
  
  template<class I_> 
  void copy(Mapper_<I_> &M_col, Mat_Base_ &S, Mat_Base_ &T);
  template<class I_> 
  void axpy(Mapper_<I_> &M_col, Mat_Base_ &S, Mat_Base_ &T);

  // Reverse Mapping
  // ---------------
  template<class I_> 
  void copy_reverse(Mapper_<I_> &M_col, Mapper_<I_> &M_row, Mat_Base_ &S, Mat_Base_ &T);
  template<class I_>
  void axpy_reverse(Mapper_<I_> &M_col, Mapper_<I_> &N_row, Mat_Base_ &S, Mat_Base_ &T);
  
  template<class I_> 
  void copy_reverse(Mapper_<I_> &M_col, Mat_Base_ &S, Mat_Base_ &T);
  template<class I_> 
  void axpy_reverse(Mapper_<I_> &M_col, Mat_Base_ &S, Mat_Base_ &T);

}


#endif
